package com.atguigu.ssyx.product.service;

import com.atguigu.ssyx.model.product.SkuInfo;
import com.atguigu.ssyx.vo.product.SkuInfoQueryVo;
import com.atguigu.ssyx.vo.product.SkuInfoVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 杨林
 * @create 2023-07-20 11:43 星期四
 * description:
 */
public interface SkuInfoService extends IService<SkuInfo> {

    /**
     * 获取Sku分页列表
     * @param page
     * @param limit
     * @param skuInfoQueryVo
     * @return
     */
    IPage<SkuInfo> getPageList(Long page, Long limit, SkuInfoQueryVo skuInfoQueryVo);

    /**
     * 商品上架：根据商品id修改商品发布状态
     * @param id
     * @param status
     */
    void publish(Long id, Integer status);

    /**
     * 商品审核：根据商品id修改商品审核状态
     * @param id
     * @param status
     */
    void check(Long id, Integer status);

    /**
     * 新人专享
     * @param id
     * @param status
     */
    void isNewPerson(Long id, Integer status);

    /**
     * 新增商品SKU信息
     * @param skuInfoVo
     */
    void saveSkuInfo(SkuInfoVo skuInfoVo);

    /**
     * 根据商品id获取Sku所有信息
     * @param id
     * @return
     */
    SkuInfoVo getSkuInfoVoById(Long id);

    /**
     * 更新Sku相关信息
     * @param skuInfoVo
     */
    void updateSku(SkuInfoVo skuInfoVo);

    /**
     * 根据id删除商品信息、平台属性、海报信息、图片信息
     * @param id
     */
    void removeAllById(Long id);


    /**
     * 根据id批量删除商品信息、商品平台属性、商品海报信息、商品图片信息
     * @param ids
     */
    void removeAllByIds(List<Long> ids);

    /**
     * 根据id批量获取sku信息
     * @param skuIdList
     * @return
     */
    List<SkuInfo> findSkuInfoList(List<Long> skuIdList);


    /**
     * 根据关键字获取sku列表
     * @param keyword
     * @return
     */
    List<SkuInfo> findSkuInfoByKeyword(String keyword);
}
